#1、输入数字n，输出n天前的日期（time或者datatime模块）
import datetime
def day_ago(n):
    print((datetime.date.today() - datetime.timedelta(n)).strftime('%Y-%m-%d'))
day_ago(180)

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
import os
def ls(path):
    for item in os.listdir(path):
        print(item)
ls("F:\BaiduNetdiskDownload\pythonProject")
#3、列表去重，并且从小到大排序
lst = [4,5,2,22,4,6,0,112,3,4,3,1,0,9,22,112,113,7]
new_lst = list(set(lst))
new_lst.sort()
print(new_lst)

#4、如何在一个函数内部修改全局变量
a = 1
def change():
    global a
    a+=1
change()
print(a)

#5、如何跨模块共享全局变量
#   把全局变量都写在一个模块文件中，
#   使用的时候导入即可
import global_var
print(global_var.a,global_var.b)

#6、python的基本数据类型有哪些？
#   整数、浮点数、复数、字符串、布尔、NoneType、列表、元组、字典、集合

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
import random
print(random.randint(1,10))
print(random.uniform(1,10))
print(random.random())

#8、python中哪些是可变数据类型，哪些是不可变数据类型
# 可变数据类型：列表、集合、字典
# 不可变数据类型：数字、字符串、元组

#9、a+=1与a=a+1有什么区别
# 对于不可变数据类型a+=1与a=a+1都是开新的内存空间赋值
# 对于可变数据类型a+=1是在原变量的地址是上进行赋值操作，a=a+1是开新的内存空间赋值


#10、什么是pep8？说出5点它的标准
# 简单说就是一种编码规范，是为了让代码“更好看”，更容易被阅读
# 缩进 空格 空行 换行 命名


#11、给定一个字符串，找出字符串第一个重复的字符
str1 = "12345ffasdfe"
for i in str1:
    if str1.count(i) > 1:
        print(i)
        break

#12、简述深拷贝与浅拷贝
# 容器类型里面包可变数据类型的时候
#   浅拷贝只拷贝容器类型第一层数据的地址, 浅拷贝之后的数据改变可能会影响原来的数据
#   深拷贝会拷贝容器类型每一层数据的地址, 深拷贝之后的数据不会影响原来的数据


#13、简述python内存机制
# python内存回收方式:以引用计数为主，分代回收和标记清除为辅的垃圾回收方式
# 内存池
# 程序在运行之初 小整数池 [-5,256]
# 简单字符串驻留区



#14、使用python实现冒泡排序，快速排序
# 冒泡
def bubble_sort(lst):
    for i in range(1,len(lst)):
        for j in range(0,len(lst)-i):
            if lst[j] > lst[j+1]:
                lst[j],lst[j + 1]=lst[j + 1],lst[j]

array_lst1=[9,2,3,6,83,1,2,67,12]
bubble_sort(array_lst1)
print(array_lst1)

# 快排
def partiotion(lst,left,right):
    tmp = lst[left]
    while left < right:
        while left < right and lst[right] >= tmp:
            right -= 1
        lst[left] = lst[right]
        while left < right and lst[left] <= tmp:
            left += 1
        lst[right] = lst[left]
    lst[left] = tmp
    return left

def quick_sort(lst,left,right):
    if left<right:
        mid = partiotion(lst,left,right)
        quick_sort(lst, mid+1, right)
        quick_sort(lst, left, mid-1)

array_lst2=[2,2,3,6,83,1,67,12]
quick_sort(array_lst2,0,len(array_lst2)-1)
print(array_lst2)



#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
str2 = "ab ba"
res = str2[::-1]
if str2 == res:
    print("是回文")
else:
    print("不是回文")


